#利用for in 实现
print("以下是用for in 循环实现")
#左下三角
#i表示行，j表示列
#range第二个数不取。每一行j从1到i变化
for i in range(1,10):
	for j in range(1,i+1):	
		#end=""表示不换行	
		print("{}x{}={:<4}".format(j,i,i*j),end="")
	#每一行结束后换行	
	print("")

print("="*80)

#左上三角
#和第一种情况类似，第一行是9开始，所以倒序，步长为-1
for i in range(9,0,-1):
	for j in range(1,i+1):

		print("{}x{}={:<4}".format(j,i,i*j),end="")
	print("")

print("="*80)

#右下三角
for i in range(1,10):
	#一个式子一共占8个位，先空出相应行需要空的个数
	#比如第一行，要空八次八个，就是range(1,9)。
	for k in range(1,10-i):
		print(end="{:8}".format(""))
	for j in range(i,0,-1):	
		#end=""表示不换行
		print("{}x{}={:<4}".format(j,i,i*j),end="")
	#执行完换行，否则行满自动换行
	print("")

print("="*80)

#右上三角
#行从九开始
for i in range(9,0,-1):
	#一个式子一共占8个位，先空出相应行需要空的个数
	for k in range(1,10-i):
		print(end="{:8}".format(""))
	for j in range(i,0,-1):	
		#end=""表示不换行
		print("{}x{}={:<4}".format(j,i,i*j),end="")
	#执行完换行，否则行满自动换行
	print("")

print("="*80)
print("以下是用while循环实现")
#左下三角
#和for循环的意思一样，
#i 表示行 ，j表示列，每一列j从1到i增加
i=1;
while i<=9:
	#每完成一行，j就要重置
	j=1;
	while j<=i:
		print("{}x{}={:<4}".format(j,i,i*j),end="")
		j+=1
	print("")
	i+=1

print("="*80)

#左上三角
#第一行从9开始，依次递减
i=9;
while i>=1:
	#每完成一行，j就要重置
	j=1;
	while j<=i:
		print("{}x{}={:<4}".format(j,i,i*j),end="")
		j+=1
	print("")
	i-=1

print("="*80)

#右下三角
i=1;
while i<=9:
	#k的重置，每一个式子空八个格子，先把应该空的位置空出来
	k=1;
	while k<10-i:
		print(end="{:8}".format(""))
		k+=1;
	#每完成一行，j就要重置
	j=1;
	while j<=i:
		print("{}x{}={:<4}".format(j,i,i*j),end="")
		j+=1
	print("")
	i+=1

print("="*80)
#右上三角

i=9;
while i>0:
	#k的重置，每一个式子空八个格子，先把应该空的位置空出来
	k=1;
	while k<10-i:
		print(end="{:8}".format(""))
		k+=1;
	#每完成一行，j就要重置
	j=i;
	while j>0:
		print("{}x{}={:<4}".format(j,i,i*j),end="")
		j-=1
	print("")
	i-=1
